package com.huantai.common.util.json;

import com.google.gson.Gson;
import com.google.gson.TypeAdapter;
import com.google.gson.TypeAdapterFactory;
import com.google.gson.reflect.TypeToken;

/**
 * 使用Gson处理数据时，将 null 转换成空字符串的类型转换工厂
 * 
 * @author Ma Chao
 * @version 2018年1月11日 上午11:57:26
 */
public class NullStringToEmptyAdapterFactory<T> implements TypeAdapterFactory { // NOSONAR

    /**
     * @see com.google.gson.TypeAdapterFactory#create(com.google.gson.Gson,
     *      com.google.gson.reflect.TypeToken)
     */
    @SuppressWarnings({"unchecked", "hiding"})
    @Override
    public <T> TypeAdapter<T> create(Gson gson, TypeToken<T> type) {
        Class<T> rawType = (Class<T>) type.getRawType();
        if (rawType != String.class) {
            return null;
        }
        return (TypeAdapter<T>) new StringNullAdapter();
    }
}
